package com.study.readerwriter;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

import org.junit.Test;

/**
* @Name: OutputStreamWriterTest
* @Description: 字符->字节写入转换流测试类：字符流 = 字节流 + 编码表
* 说明：
* 	OutputStreamWriter类：OutputStreamWriter 是字符流通向字节流的桥梁：可使用指定的 charset 将要写入流中的字符编码成字节。
* 										           它使用的字符集可以由名称指定或显式给定，否则将接受平台默认的字符集。 
* 		为了获得最高效率，可考虑将 OutputStreamWriter 包装到 BufferedWriter 中，以避免频繁调用转换器。
* 		例如：BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
* 	构造方法：
* 		OutputStreamWriter(OutputStream out) 创建使用默认字符编码的 OutputStreamWriter。
* 		OutputStreamWriter(OutputStream out, String charsetName) 创建使用指定字符集的 OutputStreamWriter。
* 	获取字符集方法：
* 		public String getEncoding() 返回此流使用的字符编码的名称。 
* 	写数据方法：
* 		public void write(int c)	写入单个字符。 
* 		public void write(char cbuf[])	写入一个字符数组
* 		public void write(char[] cbuf, int off, int len) 写入字符数组的某一部分。 
* 		public void write(String str) 写入一个字符串
		public void write(String s, int off, int len) 写入字符串的某一部分。 
		public void flush() 刷新该流的缓冲。 
	释放资源：
	    public void close() 关闭此流，但要先刷新它。在关闭该流之后，再调用 write() 或 flush() 将导致抛出 IOException。关闭以前关闭的流无效。 
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-1-15 下午10:48:11 
* @Version: V1.0
 */
public class OutputStreamWriterTest {
	
	/**
	* @Name: outputStreamWriter
	* @Description: 字符->字节写入转换流测试方法
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-15 下午10:57:28
	* @Parameters: 
	* @Return: void
	 */
	@Test
	public void outputStreamWriter() throws IOException {
		//创建文件字节写入流对象，并包装成二进制转换流
		OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("fos3.txt")) ;
		//写数据
		String data = "你好！" ;
		writer.write(data) ;
		//获取文件字节流的编码格式
		String encoding = writer.getEncoding() ;
		System.out.println(encoding);
		//释放资源
		writer.close() ;
	}

}














